home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD003b.dsk / COWS.&.BULLS.bas < prev    next >
BASIC Source File  |  2003-06-12  |  9KB  |  179 lines

  1. 5  REM    *** COWS.&.BULLS ***            
  2. 100  REM                                                     -------------------------   DOCUMENTATION.MODULE        -------------------------
  3. 120  REM                         R$ = GENERAL RESPONSE                    VARIABLE
  4. 130  REM                         NP = NUMBER OF PLAYERS       
  5. 140  REM                         PN$(10) = PLAYER'S NAMES     
  6. 150  REM                         SN(4) = FOUR DIGITS FOR             SECRET NUMBER
  7. 160  REM                         TN = TURN NUMBER             
  8. 170  REM                         GS$ = STRING.FOR.GUESS       
  9. 180  REM                         GS(4) = FOUR DIGIT GUESS     
  10. 190  REM                         BU = BULLS                   
  11. 200  REM                         CO = COWS                    
  12. 210  REM                         AG$ = ANOTHER GAME SWITCH    
  13. 220  REM                         WN$ = WIN SWITCH             
  14. 230  REM                         I = GENERAL INDEX            
  15. 240  REM                         J = GENERAL INDEX            
  16. 300  REM                                                     -------------------------   HOUSEKEEPING.MODULE         -------------------------
  17. 320  DIM PN$(10)
  18. 330  DIM SN(4)
  19. 340  DIM GS(4)
  20. 500  REM                                                     -------------------------   EXECUTIVE.MODULE            -------------------------
  21. 520  GOSUB 1000
  22. 521  REM  GAME.INSTRUCTIONS...                
  23. 530  GOSUB 2000
  24. 531  REM  GET.PLAYER'S.NAMES...          
  25. 540  GOSUB 3000
  26. 541  REM  PLAY.A.GAME...                 
  27. 550  IF AG$ < >"Y" GOTO 560
  28. 551  REM  ANOTHER GAME???                
  29. 555  HOME : VTAB (12): HTAB (15): FLASH : PRINT "NEW GAME": NORMAL : FOR I = 1 TO 3000: NEXT 
  30. 557  GOTO 540
  31. 560  END 
  32. 1000  REM                                                    -------------------------   GAME.INSTRUCTIONS           -------------------------
  33. 1020  TEXT : HOME 
  34. 1030  VTAB (8): HTAB (14)
  35. 1040  PRINT "COWS & BULLS"
  36. 1050  VTAB (12)
  37. 1060  INPUT "DO YOU NEED INSTRUCTIONS? (Y OR N) ";R$
  38. 1070  IF R$ = "N" GOTO 1990
  39. 1080  HOME 
  40. 1090  PRINT "COWS & BULLS IS DESIGNED TO STIMULATE"
  41. 1095  PRINT "YOUR DEDUCTIVE POWERS."
  42. 1100  PRINT : PRINT "UP TO TEN PLAYERS MAY PLAY."
  43. 1110  PRINT : PRINT "THE OBJECT OF COWS & BULLS IS TO GUESS"
  44. 1120  PRINT "A SECRET NUMBER KNOWN ONLY TO YOUR": PRINT "APPLE."
  45. 1125  PRINT : PRINT "YOUR APPLE GENERATES THE SECRET NUMBER": PRINT "AT RANDOM ACCORDING TO THE FOLLOWING": PRINT "RESTRICTIONS:"
  46. 1130  PRINT : PRINT " 1. THE NUMBER HAS FOUR DIGITS": PRINT : PRINT " 2. NO DIGIT MAY BE REPEATED"
  47. 1135  PRINT : PRINT "VALID EXAMPLES ARE:": PRINT : PRINT "      1234": PRINT "      0526 (MAY START WITH ZERO)": PRINT "      9870"
  48. 1140  HTAB (12): INPUT "** HIT RETURN **";R$
  49. 1145  HOME : PRINT "PLAY GOES LIKE THIS---": PRINT : PRINT "  1. YOU MAKE A GUESS AS TO WHAT YOU": PRINT "     THINK THE SECRET NUMBER IS.": PRINT : PRINT "  2. YOUR APPLE EVALUATES YOUR GUESS": PRINT "     AND RESPONDS WITH AN INDICATION"
  50. 1150  PRINT "     OF HOW GOOD YOUR GUESS WAS.": PRINT : PRINT "  3. YOU RECORD YOUR GUESS AND THE": PRINT "     RESPONSE TO IT.": PRINT : PRINT "  4. THEN YOU FORMULATE ANOTHER GUESS": PRINT "     BASED ON PREVIOUS GUESSES AND"
  51. 1152  PRINT "     RESPONSES."
  52. 1155  PRINT : PRINT "  5. THE FIRST PERSON TO GUESS THE": PRINT "     APPLE'S SECRET NUMBER WINS.": PRINT : PRINT 
  53. 1160  HTAB (12): INPUT "** HIT RETURN **";R$
  54. 1165  HOME : PRINT "THIS IS HOW THE APPLE EVALUATES YOUR": PRINT "GUESS---": PRINT : PRINT " 1. FOR EACH DIGIT THAT YOU HAVE IN THE": PRINT "    CORRECT POSITION YOU ARE AWARDED": PRINT "    ONE  'BULL'.
  55. 1170  PRINT : PRINT " 2. FOR A DIGIT THAT IS IN THE SECRET": PRINT "    NUMBER BUT NOT IN THE CORRECT": PRINT "    POSITION YOU ARE AWARDED ONE 'COW'."
  56. 1175  PRINT : PRINT " 3. DIGITS THAT DO NOT APPEAR IN THE": PRINT "    NUMBER AT ALL GENERATE NO RESPONSE."
  57. 1180  VTAB (22): HTAB (12): INPUT "** HIT RETURN **";R$
  58. 1185  HOME : PRINT "ASSUME THE SECRET NUMBER IS:": PRINT : HTAB (13): PRINT "7032": PRINT : PRINT "THEN THESE ARE EXAMPLES OF GUESSES AND": PRINT "RESPONSES.": PRINT 
  59. 1190  HTAB (13): PRINT "1243    2 COWS": HTAB (13): PRINT "2703    4 COWS": HTAB (13): PRINT "8039    2 BULLS": HTAB (13): PRINT "8079    1 BULL & 1 COW": HTAB (13): PRINT "7032    4 BULLS (WIN)"
  60. 1195  VTAB (22): HTAB (12): INPUT "** HIT RETURN **";R$
  61. 1200  HOME : PRINT "            --- HINT ---": PRINT : PRINT "MAKE YOUR FIRST TWO GUESSES": PRINT : PRINT "        1234    AND    5678": PRINT 
  62. 1205  PRINT "THEN IF YOU HAVE FOUR RESPONSES FROM": PRINT "YOUR FIRST TWO GUESSES,": PRINT "    YOU WILL KNOW  9 & 0  ARE NOT IN": PRINT "    THE SECRET NUMBER."
  63. 1210  PRINT : PRINT "IF YOU HAVE TWO RESPONSES FROM YOUR": PRINT "FIRST TWO GUESSES,": PRINT "    YOU WILL KNOW  9 & 0  ARE IN THE": PRINT "    SECRET NUMBER."
  64. 1215  PRINT : PRINT "WHAT DO YOU KNOW IF YOU HAVE THREE": PRINT "RESPONSES FROM YOUR FIRST TWO GUESSES?": PRINT 
  65. 1220  PRINT "          ... GOOD LUCK ...": VTAB (22): HTAB (12): INPUT "** HIT RETURN **";R$
  66. 1990  RETURN 
  67. 2000  REM                                                    -------------------------   GET.PLAYER'S.NAMES          -------------------------
  68. 2010 NP = 0
  69. 2020  HOME : VTAB (12)
  70. 2030 NP = NP +1
  71. 2040  PRINT "ENTER THE NAME OF PLAYER # ";NP
  72. 2050  PRINT : INPUT " ";PN$(NP)
  73. 2060  HOME : VTAB (12)
  74. 2070  INPUT "ANY MORE PLAYER'S? (Y OR N) ";R$
  75. 2075  HOME 
  76. 2080  IF R$ = "Y" GOTO 2020
  77. 2090  RETURN 
  78. 3000  REM                                                    -------------------------   PLAY.A.GAME                 -------------------------
  79. 3020  GOSUB 4000
  80. 3021  REM  GENERATE.SECRET.NUMBER        
  81. 3030  GOSUB 5000
  82. 3031  REM  PRESENT.A.TURN                
  83. 3040  IF WN$ = "N" GOTO 3030
  84. 3041  REM  NO WIN????                    
  85. 3050  IF TN < >NP GOTO 3030
  86. 3060  RETURN 
  87. 4000  REM                                                    -------------------------   GENERATE.SECRET.NUMBER      -------------------------
  88. 4020 I = 0
  89. 4030 I = I +1
  90. 4040  IF I >4 GOTO 4110
  91. 4050 SN(I) =  INT( RND(1) *10)
  92. 4060 J = 0
  93. 4070 J = J +1
  94. 4080  IF J = I GOTO 4030
  95. 4090  IF SN(I) = SN(J) GOTO 4050
  96. 4100  GOTO 4070
  97. 4110 WN$ = "N"
  98. 4111  REM  WN$ = WIN SWITCH               
  99. 4120  RETURN 
  100. 5000  REM                                                    -------------------------   PRESENT.A.TURN              -------------------------
  101. 5020 TN = TN +1
  102. 5030  IF TN >NP  THEN TN = 1
  103. 5040  HOME : VTAB (12)
  104. 5050  PRINT "IT IS ";PN$(TN);"'S TURN"
  105. 5060  VTAB (16)
  106. 5070  PRINT "OTHER PLAYERS DON'T LOOK"
  107. 5080  VTAB (20)
  108. 5090  PRINT "HIT RETURN, ";PN$(TN);
  109. 5100  INPUT " ";R$
  110. 5110  GOSUB 6000
  111. 5111  REM  GET.A.GUESS...                
  112. 5120  GOSUB 7000
  113. 5121  REM  EVALUATE GUESS...             
  114. 5130  GOSUB 8000
  115. 5131  REM  DISPLAY.GUESS.RESULT          
  116. 5140  RETURN 
  117. 6000  REM                                                    -------------------------   GET.A.GUESS                 -------------------------
  118. 6020  HOME : VTAB (8)
  119. 6030  HTAB (10): PRINT "OK, ";PN$(TN)
  120. 6040  VTAB (12): PRINT "ENTER YOUR GUESS, 4 DIGITS, NO REPEATS"
  121. 6050  VTAB (17): HTAB (17): PRINT "----"
  122. 6055  VTAB (16): HTAB (16)
  123. 6060  INPUT " ";GS$
  124. 6070  IF  LEN(GS$) < >4 GOTO 6180
  125. 6080  IF  VAL(GS$) <123  OR  VAL(GS$) >9876 GOTO 6180
  126. 6090 I = 0
  127. 6100 I = I +1
  128. 6110  IF I >4 GOTO 6300
  129. 6120 GS(I) =  VAL( MID$ (GS$,I,1))
  130. 6130 J = 0
  131. 6140 J = J +1
  132. 6150  IF J = I GOTO 6100
  133. 6160  IF GS(I) = GS(J) GOTO 6180
  134. 6170  GOTO 6140
  135. 6180  VTAB (16)
  136. 6190  CALL  -868
  137. 6200  HTAB (15)
  138. 6210  FLASH 
  139. 6220  PRINT "TRY AGAIN"
  140. 6230  NORMAL 
  141. 6240  FOR I = 1 TO 2000: NEXT 
  142. 6250  VTAB (16): CALL  -868
  143. 6260  GOTO 6050
  144. 6300  RETURN 
  145. 7000  REM                                                    -------------------------   EVALUATE.GUESS              -------------------------
  146. 7020 BU = 0:CO = 0
  147. 7030  FOR I = 1 TO 4
  148. 7040  FOR J = 1 TO 4
  149. 7050  IF I = J  AND GS(J) = SN(I)  THEN BU = BU +1
  150. 7060  IF I < >J  AND GS(J) = SN(I)  THEN CO = CO +1
  151. 7070  NEXT J
  152. 7080  NEXT I
  153. 7090  RETURN 
  154. 8000  REM                                                    -------------------------   DISPLAY.GUESS.RESULT        -------------------------
  155. 8010  HOME : VTAB (3): HTAB (18): PRINT PN$(TN)
  156. 8025  VTAB (6): HTAB (15)
  157. 8027  PRINT "GUESS = ";GS$
  158. 8030  VTAB (8): HTAB (17)
  159. 8040  PRINT CO;" COW";: IF CO < >1  THEN  PRINT "S";
  160. 8045  PRINT 
  161. 8050  VTAB (10): HTAB (17)
  162. 8060  PRINT BU;" BULL";: IF BU < >1  THEN  PRINT "S";
  163. 8065  PRINT 
  164. 8068  IF BU = 4 GOTO 8200
  165. 8069  IF WN$ = "Y" GOTO 8255
  166. 8070  VTAB (14): HTAB (4): PRINT "RECORD YOUR GUESS AND RESULT"
  167. 8080  VTAB (18): HTAB (8): INPUT "** THEN HIT RETURN **";R$
  168. 8090  GOTO 8500
  169. 8200  VTAB (14): HTAB (16): FLASH 
  170. 8205 WN$ = "Y"
  171. 8210  PRINT "THAT'S IT": NORMAL 
  172. 8220  IF TN = NP GOTO 8270
  173. 8230  VTAB (16): PRINT "  LET THE OTHERS FINISH THEIR TURN"
  174. 8240  VTAB (18): HTAB (12): INPUT "** HIT RETURN **";R$
  175. 8250  GOTO 8500
  176. 8255  IF TN < >NP GOTO 8070
  177. 8260  VTAB (14): HTAB (11): PRINT "THERE WAS A WINNER"
  178. 8270  VTAB (18): INPUT "WANT TO PLAY ANOTHER GAME? (Y OR N) ";AG$
  179. 8500  RETURN